1. Field of the Invention
The present invention relates to tracking transaction related data within a computerized device in general, and to tracking transaction related data in a multi-tier computerized environment, in particular.
2. Discussion of the Related Art
A complex, multi-tier computerized network environment makes it difficult to keep track of a single transaction as it spans across multiple tiers. A tier can be a software or hardware module that executes an application. An example for such multi-tier computerized environment can comprise a HTTP tier, such as a web portal, and servers, databases; packaged and homegrown applications.
A transaction sent by a user preferably requires resources of several tiers, and in many cases generates several requests. Such requests are sent to tiers for retrieving or modifying data stored in such tiers. For example, retrieving data according to a query sent from a user, or updating data in case a user performs an action via the multi-tier computerize environment.
One solution for tracking requests and responses of a single transaction is to add a tag to a parent request, the first request of a transaction, and maintain the same tag for other requests generated by the parent request. This solution requires a tagging module that is complex to implement, install and can be perceived as intrusive therefore raise concern with users and system administrators. More so, it may influence the entire tier or client machine in case of a malfunction. Further, the tag is added to the packet headers related to requests and responses and thus handles deeper layers of the operating system, network or communication protocol.
In accordance with some known architectures, two or more threads may operate within a single tier. For example, a listener-worker model, in which one thread receives a request and delegates the request to another thread that executes it, generates additional requests or sends the request to another tier. Other architectures may comprise additional threads, for example, another thread that receives responses from other tiers and sends a response to the tier from which the request was sent. FIG. 1A shows three tiers as implemented as known in the art, Tier1 (110), Tier2 (120) and Tier3 (130). A communication channel (not shown) connects Tier1 (110) and Tier2 (120) and two communication channels (not shown) connect Tier2 (120) and Tier3 (130). In case two IIOP requests are received by Tier2 (120) that generates three SQL requests sent to Tier3 (130), it is unobvious to determine which IIOP request generated the second SQL request. Associating requests generated during the handle of other requests to the request that generated them without tagging data fields in packets related to the requests and responses is hence a long felt need. Other technical problems addressed are methods for determining resource consumption of requests and the time spent by each tier or thread on each request.
U.S. Pat. No. 7,051,339 provides for track and measurement of tasks related to a transaction by tagging each data related to transactions, such as requests and responses. The disadvantages of tagging are disclosed above. U.S. Pat. No. 6,714,976 discloses tracking transactions in a client-server environment. For example, detecting data in the client side, and compare the detected data to data in the server side. The solution disclosed in U.S. Pat. No. 6,714,976 might not be suitable for a multi-tier computerized environment. U.S. patent publication number 2006/015512 discloses tracking data in a multi-tier computing environment by assigning two agents on each tier, one agent for detecting data related to requests and another agent communicates with agents of neighboring tiers and send the data fields detected by the first agent. This solution requires another communication channel for the transmission of data related to request and requires another module for each tier. Additionally, the solution requires two agents in each tier, for different purposes, one for detecting and the other for processing data and transmits it to agent of other tiers.
It is desirable to provide a method and apparatus for associating several requests to the same transaction without the need to add or modify modules within the kernel, therefore to operate seamlessly within the user space, hence remove to the need for a kernel space agent. Further, it is desirable to associate requests and responses using only one agent in each tier, and to associate requests in a multi-threaded environment. Another technological problem is to associate requests without modifying request data or response data; whether in the packet level or the byte stream level, and without adding additional communication interactions is between the tiers by using more agents.